package com.boss.common.service;

import com.boss.api.dto.ApiResultDTO;
import com.boss.common.entity.WfActionDTO;
import com.boss.framework.exception.AppRuntimeException;
import com.boss.sys.ca.user.dto.UserDTO;
import com.boss.sys.workflow.dto.OperationLogDTO;
import com.boss.sys.workflow.dto.TaskDTO;

import java.util.List;
import java.util.Map;

/**
 * <br>Title:工作流接口类
 * <br>Description:工作流接口类
 * <br>Author: 刘彬彬
 * <br>Date: 2020年06月8日 13:12
 */
public interface IWorkflowBusiness {
    /**
     * 走工作流的方法
     * <br>Description: 走工作流的方法 wfActionDTO.getBizDatas()是list的
     * <br>Author: 刘彬彬
     * <br>Date: 2020-06-08
     * @param user 用户
     * @param wfActionDTO
     * @throw
     */
    ApiResultDTO doWorkFlowList(UserDTO user, WfActionDTO wfActionDTO) throws AppRuntimeException;
    /**
     * 走工作流的方法
     * <br>Description: 走工作流的方法 wfActionDTO.getBizDatas()是list的
     * <br>Author: 刘彬彬
     * <br>Date: 2020-06-08
     * @param user 用户
     * @param wfActionDTO
     * @throw
     */
    ApiResultDTO doWorkFlowLists(UserDTO user, WfActionDTO wfActionDTO) throws AppRuntimeException;
    /**
     * 走工作流的方法
     * <br>Description: 走工作流的方法
     * <br>Author: 刘彬彬
     * <br>Date: 2020-06-08
     * @param user 用户
     * @param wfActionDTO
     * @throw
     */
    ApiResultDTO doWorkFlow(UserDTO user, WfActionDTO wfActionDTO) throws AppRuntimeException;
    /**
     * 查询业务数据所在流程菜单节点的流程状态信息
     * <br>Description: 查询业务数据所在流程菜单节点的流程状态信息
     * <br>Author: 周天贺
     * <br>Date: 2021-03-19
     * @param user 用户
     * @param wfActionDTO
     * @throw
     */
    List<Map> queryWorkFlowStatus(UserDTO user, WfActionDTO wfActionDTO,List<String> statuses,List<String> bizkeyList) throws AppRuntimeException;

    /**
     * 根据菜单id和
     * @param userDTO
     * @param wfActionDTO
     * @return： 正在改状态下的流程id集合
     * @throws AppRuntimeException
     */
    List<String> queryWorkflowInfo(UserDTO userDTO, WfActionDTO wfActionDTO) throws AppRuntimeException;

    /**
     * 根据菜单id和
     * @param userDTO
     * @param wfActionDTO
     * @return： 正在改状态下的流程id集合批次
     * @throws AppRuntimeException
     */
    List<String> queryWorkflowInfo1(UserDTO userDTO, WfActionDTO wfActionDTO) throws AppRuntimeException;
    /**
     * 日志
     * @param id
     * @param province
     * @param year
     * @return
     * @throws AppRuntimeException
     */
    List<OperationLogDTO> getOperationLogDTOS(String id, String province, Integer year) throws AppRuntimeException;
    /**
     * <br>Description:获取代办数据
     * <br>Author: 卢肖正(luxiaozheng@boss.com.cn)
     * <br>Date: 2020年07月17日
     * @param config
     * @param menuguid
     * @param province
     * @param year
     * @throw
     */
    List<TaskDTO> getToDoTask(Map<String, Object> config, String menuguid, String province, String year) throws AppRuntimeException;

    /**
     * 单位审核说明
     * @param wfActionDTO
     * @return
     */
    List<Map> getAuditInstruction(WfActionDTO wfActionDTO);
}
